#ifndef HASHTABLE_H
#define HASHTABLE_H

template <class Key, class Value>
class IHashTable {
public:
    virtual Value get(Key key) const = 0;
    virtual void put(Key key, Value value) = 0;
    virtual int size() const = 0;
    virtual void clear() = 0;
};

template <class Key, class Value>
class HashTable : public IHashTable {
    Value get(Key key) const = 0;
    void put(Key key, Value value) = 0;
    int size() const = 0;
    void clear() = 0;
};

#endif // HASHTABLE_H
